package com.hn.sanya.zzht.service.Impl;


import com.hn.sanya.zzht.dao.UserDao;
import com.hn.sanya.zzht.entity.User;
import com.hn.sanya.zzht.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
　　* @Description: 用户表业务层实现
　  * @author syiti
    * @Method
　　* @params
　　* @return
　　* @date 2018/3/16 15:06
　　*/
@Service
@Transactional(rollbackFor=Exception.class)
public class UserServiceImpl implements UserService {

    @Autowired
    private CacheManager cacheManager;

    @Autowired
    private UserDao userDao;


    /**
     * decs:根据账户名查询
     * cacheNames 设置缓存的值
     * key：指定缓存的key，这是指参数id值。 key可以使用spEl表达式
     * @param username
     * @return
     */
    @Cacheable(value = "cache", key = "#username",sync = true)
    public User getFindUserInfo(String username) {
        return userDao.findUserInfo(username);
    }

    /**
     * decs:修改密码
     * 每次执行都会执行方法，同时使用新的返回值的替换缓存中的值
     * @param user
     */
    @CachePut(value = "cache",key = "#user.username")
    public User modifyPassword(User user){
        userDao.modifyPassword(user);
        return user;
    }
}
